package com.junxonline.instant.admin.service.config;

import com.baomidou.mybatisplus.extension.service.IService;
import com.junxonline.instant.dao.entity.dto.ui.TreeNodeDTO;
import com.junxonline.instant.dao.entity.dto.ui.TreeSelectNodeDTO;
import com.junxonline.instant.dao.entity.model.config.DataSource;
import com.junxonline.instant.dao.entity.vo.config.DataSourceVO;
import com.junxonline.instant.common.entity.common.CommonReqPage;
import com.junxonline.instant.common.entity.common.CommonRespPage;

import java.util.List;

/**
 * 数据源管理接口
 *
 * @author JunX
 * @date 2021-08-02
 */
public interface DataSourceService extends IService<DataSource> {

    /**
     * 查询备份文件列表
     *
     * @param vo 请求参数
     * @return CommonRespPage<dataSource>
     */
    CommonRespPage<DataSource> queryList(CommonReqPage<DataSourceVO> vo);

    /**
     * 查询备份表列表（Tree）
     *
     * @param id ID
     * @return List<TreeNodeDTO>
     */
    List<TreeNodeDTO> queryTableTree(Long id);

    /**
     * 查询数据库表列表（TreeSelect）
     *
     * @return List<TreeSelectNodeDTO>
     */
    List<TreeSelectNodeDTO> queryTableTreeSelect();

    /**
     * 备份数据库
     *
     * @param username 操作者用户名
     * @param tables   需要备份的表名称集合
     */
    void backup(String username, List<String> tables);

    /**
     * 还原数据库
     *
     * @param id ID
     */
    void restore(Long id);

    /**
     * 删除备份文件
     *
     * @param ids 请求参数
     */
    void delete(List<Long> ids);

}
